﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Sigecov.Models;
namespace Sigecov.Formularios
{
    public partial class FrmGerencialFuncionario : Form
    {
        public FrmGerencialFuncionario()
        {
            InitializeComponent();
        }

        private void btnNovoFuncionario_Click(object sender, EventArgs e)
        {
            FrmBase._tipoOperacao = "INCLUIR";
            FrmFuncionario funcionario = new FrmFuncionario();
            DialogResult confirmacao = funcionario.ShowDialog();
            if (confirmacao.ToString().ToUpper() == "CANCEL")
                Funcionario.ListarFuncionario(dgvFuncionario);
        }

        private void btnAlterarFuncionario_Click(object sender, EventArgs e)
        {
            if (dgvFuncionario.Rows.Count > 0)
            {
                FrmBase._idAcao = Convert.ToInt32(dgvFuncionario.SelectedCells[0].Value);
                FrmBase._tipoOperacao = "ALTERAR";
                FrmFuncionario funcionario = new FrmFuncionario();
                DialogResult confirmacao = funcionario.ShowDialog();
                if (confirmacao.ToString().ToUpper() == "CANCEL")
                    Funcionario.ListarFuncionario(dgvFuncionario);
            }
            else
                MessageBox.Show("Nenhum item foi selecionado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnDeletarFuncionario_Click(object sender, EventArgs e)
        {
            if (dgvFuncionario.Rows.Count > 0)
            {
                FrmBase._idAcao = Convert.ToInt32(dgvFuncionario.SelectedCells[0].Value);
                FrmBase._tipoOperacao = "DELETAR";
                FrmFuncionario funcionario = new FrmFuncionario();
                DialogResult confirmacao = funcionario.ShowDialog();
                if (confirmacao.ToString().ToUpper() == "CANCEL")
                    Funcionario.ListarFuncionario(dgvFuncionario);
            }
            else
                MessageBox.Show("Nenhum item foi selecionado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        private void btnAtualizarFuncionarios_Click(object sender, EventArgs e)
        {
            Funcionario.ListarFuncionario(dgvFuncionario);
        }

        private void FrmGerencialFuncionario_Load(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 9;
            Funcionario.ListarFuncionario(dgvFuncionario);
        }

        private void txtPesquisa_TextChanged(object sender, EventArgs e)
        {
            if (!(string.IsNullOrWhiteSpace(txtPesquisa.Text)))
            {
                using (SigecovContext DB = new SigecovContext())
                {
                    if (rdbCodigo.Checked)
                    {
                        int _codigo = Convert.ToInt32(txtPesquisa.Text);
                        dgvFuncionario.DataSource = DB.Funcionarios.Select(f => new { Código = f.funId, Nome = f.funNome, Telefone = f.funTelefone })
                            .Where(c => c.Código == _codigo).OrderBy(c => c.Nome).ToList();
                    }
                    else
                    {
                        dgvFuncionario.DataSource = DB.Funcionarios.Select(f => new { Código = f.funId, Nome = f.funNome, Telefone = f.funTelefone })
                            .Where(c => c.Nome.Contains(txtPesquisa.Text)).OrderBy(c => c.Nome).ToList();
                    }

                }
            }
            else
                Funcionario.ListarFuncionario(dgvFuncionario);
        }

        private void txtPesquisa_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rdbCodigo.Checked)
                Ferramenta.SomenteNumero(e);
        }

        private void rdbCodigo_CheckedChanged(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 9;
            txtPesquisa.Clear();
        }

        private void rdbNome_CheckedChanged(object sender, EventArgs e)
        {
            txtPesquisa.MaxLength = 32767;
            txtPesquisa.Clear();
        }
    }
}
